package com.dev.listener;

import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * 在线人数统计
 */
@WebListener
public class OnlineListener implements HttpSessionListener {
    
    // 得到在线人数
    public static int onlineCount = 0;
    
    /**
     * 当有新的session创建时，在线人数加一
     * @param httpSessionEvent
     */
    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        onlineCount++;
        
        // 将在线人数放入session作用域中
        // httpSessionEvent.getSession().setAttribute("onlineCount", onlineCount);
        // 将在线任务放入application作用域中
        httpSessionEvent.getSession().getServletContext().setAttribute("onlineCount", onlineCount);
    }
    
    /**
     * 当session销毁时，在线人数减一
     * @param httpSessionEvent
     */
    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        onlineCount--;
        // 将在线人数放入session作用域中
        // httpSessionEvent.getSession().setAttribute("onlineCount", onlineCount);
        // 将在线任务放入application作用域中
        httpSessionEvent.getSession().getServletContext().setAttribute("onlineCount", onlineCount);
    }
}
